package cn.wen.core.http.util;

import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;

import java.io.File;

/**
 * 创建目录
 */

public class DirUtil {
    public static final String DIR_FILE = "file";
    public static final String DIR_APK = "apk";
    public static final String DIR_IMAGE = "image";

    /**
     * 创建文件目录
     *
     * @param context 上下文
     * @param dirName 目录名称
     * @return
     */
    public static File createCacheDir(Context context, String dirName) {
        if (TextUtils.isEmpty(dirName)) {
            dirName = DIR_FILE;
        }
        File dir = null;
        if (checkSDExist()) {
            dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), dirName);
        } else {
            dir = new File(context.getFilesDir(), dirName);
        }
        if (!dir.exists()) {
            dir.mkdirs();
        }
        if (!dir.exists()) {
            return context.getFilesDir();
        }
        return dir;
    }

    /**
     * 创建文件的存放目录
     *
     * @return
     */
    public static File createFileDir(Context context) {
        return createCacheDir(context, DIR_FILE);
    }

    public static File createApkDir(Context context) {
        return createCacheDir(context, DIR_APK);
    }

    public static File createImageDir(Context context) {
        return createCacheDir(context, DIR_IMAGE);
    }

    /**
     * 删除文件夹
     *
     * @param file
     */
    public static void deleteFileDir(File file) {
        if (file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文件
                file.deleteOnExit(); // delete()方法 你应该知道 是删除的意思;
            } else if (file.isDirectory()) { // 否则如果它是一个目录
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
                    deleteFileDir(files[i]); // 把每个文件 用这个方法进行迭代
                }
            }
            file.delete();
        }
    }

    /**
     * 清除
     */
    public void delete(Context context) {
        deleteFileDir(createFileDir(context));
        deleteFileDir(createApkDir(context));
        deleteFileDir(createImageDir(context));
    }

    // 检查是否SDK准备好
    public static boolean checkSDExist() {
        return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
    }
}
